import Plant from './plant';
import Bullet from '../player/bullet';
import Music from '../runtime/music.js';

/**
 * 豌豆射手类
 * 继承自Plant，实现豌豆射手的特定功能
 */
export default class Peashooter extends Plant {
  /**
   * 构造函数
   * @param {number} x - x坐标
   * @param {number} y - y坐标
   */
  constructor(x = 0, y = 0) {
    // 调用父类构造函数，传入图片前缀、帧数、宽高、帧间隔和坐标
    super('graphics/Plants/Peashooter/Peashooter_', 12, 71, 71, 5, x, y);
    // 豌豆射手的特定属性
    this.damage = 10; // 伤害值
    this.attackRange = 100; // 攻击范围
    this.attackInterval = 50; // 攻击间隔（帧）
    this.attackCounter = 0; // 攻击计数器
    this.music = Music.getInstance();
  }

  /**
   * 更新方法
   * 重写父类的update方法，添加攻击逻辑
   */
  update() {
    super.update(); // 调用父类的update方法更新动画
    
    // 攻击逻辑
    this.attackCounter++;
    if (this.attackCounter >= this.attackInterval) {
      this.attack();
      this.attackCounter = 0;
    }
  }

  /**
   * 攻击方法
   * 豌豆射手的攻击逻辑
   */
  attack() {
    // 从对象池获取子弹
    const bullet = GameGlobal.databus.pool.getItemByClass('bullet', Bullet);
    // 初始化子弹位置（豌豆射手右侧中间）
    bullet.init(this.x , this.y +10, 5);
    // 添加到游戏中
    GameGlobal.databus.bullets.push(bullet);
    this.music.playShoot();
  }
}